//  deploy/index.js里面
const scpClient = require('scp2')
const ora = require('ora')
const chalk = require('chalk')
const server = require('./products')
const spinner = ora(
  '正在发布到' + (process.env.NODE_ENV === 'production' ? '生产' : '测试') + '服务器...'
)
const delete_command =
  process.env.NODE_ENV === 'production'
    ? 'rm -rf /www/wwwroot/louyudp/'
    : 'rm -rf /www/wwwroot/louyudp/'

const build_path = process.env.NODE_ENV === 'production' ? 'dist/' : 'dist/'

var Client = require('ssh2').Client

var conn = new Client()
conn
  .on('ready', function () {
    // rm 删除dist文件，\n 是换行 换行执行 重启nginx命令 我这里是用docker重启nginx
    conn.exec(delete_command, function (err, stream) {
      if (err) throw err
      stream
        .on('close', function () {
          // 在执行shell命令后，把开始上传部署项目代码放到这里面
          spinner.start()
          scpClient.scp(
            `${build_path}/index.html`,
            {
              host: server.host,
              port: server.port,
              username: server.username,
              password: server.password,
              path: server.indexpath,
            },
            function (err) {
              if (err) {
                console.log(chalk.red('发布失败.\n'))
                throw err
              } else {
                scpClient.scp(
                  build_path,
                  {
                    host: server.host,
                    port: server.port,
                    username: server.username,
                    password: server.password,
                    path: server.assetspath,
                  },
                  function (err) {
                    spinner.stop()
                    if (err) {
                      console.log(chalk.red('发布失败.\n'))
                      throw err
                    } else {
                      console.log(
                        chalk.green(
                          'Success! 成功发布到' +
                            (process.env.NODE_ENV === 'production' ? '生产' : '测试') +
                            '服务器! \n'
                        )
                      )
                    }
                  }
                )
              }
            }
          )

          conn.end()
        })
        .on('data', function (data) {
          console.log('STDOUT: ' + data)
        })
        .stderr.on('data', function (data) {
          console.log('STDERR: ' + data)
        })
    })
  })
  .connect({
    host: server.host,
    port: server.port,
    username: server.username,
    password: server.password,
  })
